Work allocation system

ABSTRACT

The invention is concerned with a work allocation system having a plurality of agents that bid for work in accordance with preferences and behaviour of resources corresponding thereto.  
     Each agent represents a group of resources and is arranged to evaluate the likelihood that at least one resource in the group can carry out a work item. The evaluation is dependent on work items previously selected and/or carried out by the resource, so that the agent effectively models the preferences of its workers. The agent can use this preference information to decide a bidding strategy (i.e. to decide which work items it can bid for), and, having successfully bid for a work item, can allocate work based on individual characteristics and observed work preferences.  
     The bidding for work between agents is, for example, conducted in accordance with contract net based negotiation.

DESCRIPTION

[0001] The present invention relates to a method of and apparatus for reviewing work items for allocation to a resource, particularly but not exclusively suited to a work allocation system.

[0002] Work allocation systems are well known and are generally referred to as scheduling systems, resource allocation systems, or workflow systems. Essentially, work allocation systems are concerned with optimising the allocation of a plurality of resources to a plurality of tasks given certain constraints.

[0003] In many known systems, work allocation is modelled using so-called agent-based technology. An agent is a computer program that acts on behalf of an entity such as a user or a piece of equipment. The agent typically holds data relating to the entity that it represents and is provided with decision-making software for making decisions on behalf of the entity. In the context of work allocation systems, an agent is known to represent single entities such as a resource, a work-processing centre, and a central administration centre.

[0004] Agents typically communicate with other agents in an attempt to accomplish a goal. R. Smith introduced a mechanism for collaboration between agents, known as the “contract net” protocol, in 1980. The mechanism is described in “The contract net protocol: High-level communication and control in distributed problem solver” IEEE Transactions on Computers, 29(12):1104-1113, December 1980. When an agent needs the services of other agents it plays the role of a “manager” and attempts to contract work out to other “contractor” agents. Other protocols apart from the “contract net” can be used, for example “English Auction” and “Dutch Auction”. A library of these can be found at the FIPA web site (http://www.fipa.org/repository/ips.html) identified by the identifiers XC00025 to XC00036. Alternatively other forms of signaling between agents could be used, for example by updating a shared database record, or otherwise altering an object in the shared agent environment.

[0005] Many known agent-based systems employ the contract net protocol for allocating tasks to agents. In particular, the multi-agent system of Kwang Mong Sim etal, described in “Simulation of a multi-agent protocol for task allocation in cooperative design”, Proceedings of the IEEE systems, Man and cybernetics 1999, uses the contract net protocol to coordinate agent activities to accomplish a goal. Essentially, whenever an agent needs the services of another agent it announces the tasks to be done, whereupon at least some of the other agents bid for the tasks. The bid includes information such as expertise to perform the task and experience in performing similar tasks; the requesting agent selects a bidding agent in dependence on the information in the bid. In this system each agent is assumed to be responsible only for its own activities, so that a bid comprises information relating to a single agent, and the requesting agent is essentially comparing the capabilities of single agents.

[0006] International patent application GB98/02944 (publication number WO 99/17194) describes a resource handling system where, again, tasks are announced by an agent (referred to as manager), and so-called contracting agents evaluate the task with respect to their own abilities and commitments and submit bids (or not, as the case may be) in accordance therewith. The communication of task announcement, bid submission and acceptance is handled in accordance with the contract net protocol (and other similar communication protocols). In this system the contracting agents represent a work-processing centre, and, when formulating a bid, a contracting agent reviews availability, skills and rates of pay of the workforce associated with its respective work-processing centre. In this application the “workforce” is modelled as a single entity.

[0007] The Zeus Toolkit (“The Zeus Toolkit”, Collis, J, Ndumu, D, Nwana,H; BT Technology Journal 16(3) July 1998 p60-68) contains tools to construct agent systems that utilize the contract net protocol in this way. The article “Coordination in Software Agent Systems” (Nwana,H, Lee,L., & Jennings,J. BT Technology Journal 14(4) 1996) surveys these and other co-ordination systems.

[0008] The agent system described in “A hybrid agent-oriented infrastructure for modelling manufacturing enterprises”, Shen and Norrie, presented at the 11^(th) workshop on knowledge acquisition, modelling and management, describes use of mediator agents in an agent-based multi-functional system. The mediator agents provide a “gateway” to other agent types, meaning that each agent subsystem is connected to the overall system through a special mediator. The authors consider this architecture to provide an efficient way of integrating a range of agent-based services. A mediator agent receives task requests from other mediator agents, then formulates and sends out task messages to agents associated therewith. Agents receiving the task messages formulate and return bids to their associated mediator agent, which passes the bid information to the originally requesting mediator agent.

[0009] In these known systems, each agent represents a single entity whose characteristics and capabilities are modelled by the agents; for example in the case of an agent representing a resource, each agent holds data representative of skills and location attributes corresponding to the resource, and negotiates for work on the basis of the attribute data.

[0010] In certain situations it would be useful if an agent could represent a group of entities, for example a team of workers. This would be useful because service-based industries are now considering allocating work to selfmanaged teams, rather than to individual workers. In self-managed teams, work is allocated to a team (typically by bidding, based on, e.g. the contract net protocol described above) and the team then has a responsibility to get the work done; if the work is not done, the team does not get paid. Typically the teams are flexible, meaning that workers can leave and join a team, effectively choosing the team that they want to be a part of (on the basis of incentives, personal constraints etc.).

[0011] However, such an arrangement is non-trivial to model. Currently a resource allocation system negotiates for resources with the assumption that the resources represented by an agent will be available. If the resources change, for example because a worker has moved from one team to another, this could mean that whichever job(s) involved that worker can no longer be carried out. As a result the system may have to repeat the negotiation process in respect of that/those jobs, and the team concerned will not receive payment.

[0012] According to the present invention, there is provided a method of reviewing a work item for allocation to a group of resources, wherein review of the work item has been instigated by a work source means. The method includes the steps of

[0013] creating a data structure identifying work items previously allocated to at least some of the resources in the group;

[0014] evaluating the probability that one of resources will carry out the work item based on values in the data structure; and

[0015] comparing the evaluated probability with a suitability criterion so as to identify whether one of the resources is suitable to carry out the work item.

[0016] The method is performed by an apparatus, herein after referred to as a mediator agent, which has access to a data structure that is representative of a group of resources, which can be a team of workers. The data structure is configured such that workers can easily be added and removed therefrom, and is populated using previously stored data records corresponding to workers in the group. It is assumed that a worker does what he/she prefers to do, so that, by recording his/her work activities, his/her preferences are implicitly recorded.

[0017] Equipped with such a data structure a mediator agent can make decisions that are representative of the likely actions of its workers. For example, given a particular work item, the mediator agent conveniently uses the data structure to evaluate whether or not a worker in the team is likely to carry out the work item.

[0018] In a work allocation system, the work source means, hereinafter referred to as a work source agent, can be arranged to offer a work item to a plurality of mediator agents, for review according to the invention, at a cost that depends on its operational priorities, such as the urgency of the work items and/or a value associated with an entity that originated the work item.

[0019] As described above, the mediator agents are then arranged to evaluate, on the basis of the data structure, whether or not one of the workers in the team is likely to carry out the work. If it appears likely that a worker within the team will carry out the work the mediator agent then decides whether or not to bid for the work item in accordance with its operational priorities.

[0020] Preferably, if one of the workers is identified as being suitable to carry out the work item, the mediator agent generates a bid comprising the evaluated price and signals the bid to the work source means.

[0021] Conveniently a mediator agent is arranged to receive a signal identifying that the bid has been successful, whereupon the mediator agent works out a price at which it can offer the work item to the workers. For all, or a selection of the workers, the mediator agent evaluates the similarity between the work item and work items previously allocated thereto, and selects one or more workers on the basis of the similarity. Then, for the or each selected worker, the mediator agent applies a price to the work item that is proportionate to the evaluated similarity, and offers the work item to the selected workers at the respective applied price. The mediator agent can additionally modify the price to account for the efficiency with which a given worker can complete the work item, so that, for example, its value is greater to a more efficient resource.

[0022] Alternatively the mediator agent can offer the work item to all workers in its group at the same price and allow the agents representative of the workers to select the work item at the offered price. The mediator agent could vary the price of the work item offered to the team on the basis of the time left to execute the work item.

[0023] As stated above, an example of a resource is a worker in a team. A resource can also be a computer program, and/or a machine, such as a computer or a router device. A work item can be a job to be carried out by a worker or a processing job to be carried out by a computer program and/or a device.

[0024] An embodiment of the invention will now be described, by way of example, with reference to the accompanying drawings, in which:

[0025]FIG. 1a is a schematic system diagram of an environment in which embodiments of the invention operate;

[0026]FIG. 1b shows the architecture of a conventional computer for use in the system of FIG. 1a;

[0027]FIG. 2 illustrates the structure of a work allocation system in accordance with the invention;

[0028]FIG. 3 is a graph illustrating a cost function applied by an operational support system forming part of the work allocation system of FIG. 2;

[0029]FIG. 4 is a flow chart illustrating the operation of the system of FIG. 2;

[0030]FIG. 5 is a schematic block diagram showing programs accessible to the mediator agent forming part of the work allocation system of FIG. 2;

[0031]FIG. 6 illustrates a data structure used to generate an outcome, or value for a class;

[0032]FIG. 7 shows an example of the way in which the data structure of FIG. 6 is used;

[0033]FIG. 8 is a flow-chart illustrating the generation of the classifier from the data shown in FIG. 7; and

[0034]FIGS. 9 and 10 are schematic diagrams illustrating the generation of a bidding strategy from the data structure of FIG. 6.

OVERVIEW OF OPERATING ENVIRONMENT

[0035] Referring to FIG. 1a, a work allocation system according to the invention can be run on one or more work allocation servers 2 which communicate via a network 3, for example an intranet, with first and second workgroup terminals 4, 5, and a kiosk 4 a. The work allocation server 2 can also communicate, via public land mobile network PLMN and base station BS1, with mobile devices such as a mobile phone 4 b and a PDA 4 c. Work allocation software runs on each of the computers 2, 4, 4 a, 4 c, 5 in the system.

[0036] A typical architecture of each of the system computers 2, 4, 5 on which software implementing the invention can be run, is shown in FIG. 1b. Each computer comprises a central processing unit (CPU) 6 for executing computer programs and managing and controlling the operation of the computer. The CPU 6 is connected to a number of devices via a bus 7, the devices including a read/write device 8, for example a floppy disk drive for reading and writing data to and from a removable storage medium such as a floppy disk, a storage device 9, for example a hard disk drive for storing system and application software, a CD/DVD-ROM drive 10 for reading data and programs from a CD/DVD disc 11 and memory devices including ROM 12 and RAM 13. The computer further includes a network card or modem 14 for interfacing to a network such as the intranet 3 and user input/output devices, which, for the fixed terminals 2, 4, 5 include a mouse 16 and keyboard 17 connected to the bus 7 via an input/output port 18. Each computer 2, 4, 4 a, 4 c, 5 also includes a display 19. It will be understood by the skilled person that the above described architecture is not limiting, but is merely an example of a typical computer architecture. It will be further understood that the described computer has all the necessary operating system and application software to enable it to fulfil its purpose.

OVERVIEW OF WORK ALLOCATION SYSTEM

[0037]FIG. 2 is a more detailed layout of the work allocation system 1 described above with reference to FIGS. 1a and 1 b. In this embodiment, review of work items for allocation to a resource is exemplified in the context of allocating jobs to workers in a team.

[0038] The work allocation server 2 comprises an operational support system (OSS) 2, for example a billing and work scheduling system. The OSS 2 is provided with, or generates, a definition of a work project to be carried out by one or more workgroups 20, 21. Each workgroup 20, 21 includes a plurality of workers 22-24; 25-27, each of whom has access to a workgroup terminal 4, 5. Each of the workgroup terminals 4, 5 runs a software program referred to herein as a mediator agent 28, 29, which is capable of communicating with the OSS 2 and each of a plurality of workers 22-27 in the workgroups 20, 21 via a graphical user interface (GUI).

[0039] The operational support system (OSS) 2 includes a work item handler 30 and an OSS agent 31. Customers 32, or the environment 33, generate work items that are acquired by the work item handler 30, for example a customer handling system, maintenance schedule or fault detector. The acquired work items are then passed to the OSS agent 31 which interfaces with the mediator agent 28, 29 in each workgroup 20, 21.

[0040] Embodiments arise from a crucial realization that the needs and wishes of workers in the market should be taken into account when evaluating the cost and/or benefit of agreeing to undertake a piece of work. Furthermore, when faced with the problem of allocating work among groups of workers it has been recognized that, in order to allocate work efficiently, a group of workers is most preferably regarded as a single entity. Having recognized the importance of treating groups or workers as single entities, embodiments provide a representation of that entity that is sufficiently flexible and dynamic to enable the composition thereof to change, which is representative of actual changes in composition of a group of workers.

[0041] Accordingly the embodiment is concerned with allocation of work from the OSS 31 to the mediator agents 28, 29, each of which represents a group of workers. A mediator agent 28, 29 is arranged to bid for work on behalf of the workers associated therewith, and has responsibility for ensuring that the work that it successfully bids for can be completed by its workers.

[0042] In an embodiment of the invention the mediator agents 28, 29 are arranged to use preference information when allocating work and are thus able to bias markets in accordance with the preferences of workers carrying out the work.

[0043] An advantage of the invention is that, when work is allocated, there is a good chance that the worker(s) are suitable, permitted, willing & likely to carry out the work. Thus a further advantage is that the workers are likely to receive work allocations that are appropriate to their working preferences, meaning that they are likely to be highly motivated in the longer term.

[0044]FIG. 4 illustrates the allocation of a work item from its generation through to its completion. An embodiment of the invention will be described with reference to FIGS. 5, 6, 7 and 8 in the context of step s7 of the process.

[0045] Initially the work item is generated by a customer 32 or the environment 33 (step s1) and acquired by the work item handler (step s2). The work item handler passes the item to the OSS agent 31 (step s3), which prices the work item using a cost function, such as that shown in FIG. 3. The cost function can reflect business priorities, for example the urgency of the work with respect to penalty clauses, or the value of the customer according to some model (step s4). In general the price of a work item varies with time, increasing 301 as the time approaches a deadline 303 set by the customer 32, decreasing 305 rapidly as the deadline is passed, and then increasing 307 again. Thus the price offered by the OSS agent 31 is dependent both on the time that the work item was received from the work item handler 30 and the deadline for that work item.

[0046] For example, when the deadline 303 is passed, the OSS agent 31 will price a work item low, because the priority for the work item is low, meaning that the reward allocated by the business for carrying out the work item at this time is low.

[0047] The mediator agent 28, 29 for each workgroup receives the offer (step s6) and uses the preferences of its workgroup to identify whether any of its workers can carry out the work (step s7). In the context of this embodiment, preferences are essentially a summary of observed worker behaviour—that is to say that it is assumed that a worker does what he/she prefers to do, so that, by recording his/her work activities, his/her preferences are implicitly recorded.

[0048] In the embodiment, it is assumed that a database DB comprises data sets corresponding to work carried out, or selected, by workers in the workgroup. A data set can be viewed as a fixed-size table with rows and columns, where each row is a record in the data (corresponding to a worker) and each row has many columns, each of which is an attribute in the data. Each attribute can take on a set of values.

[0049] In this embodiment, the mediator agent 28 is interested in evaluating a target object, or a class, which is an attribute found in the data set whose values it wants to predict when given the values of the other attributes (e.g. given attributes job type, job location, customer type, customer location etc., are any of the workers likely to perform the work item?).

[0050] Accordingly, referring to FIG. 5, the embodiment includes an evaluating program 501 for evaluating whether or not a worker in the workgroup can carry out the work item by predicting a value for class does/does not do work item. The evaluating program 501 is run by the mediator agent 28 during step s7.

[0051] In overview, the evaluating program 501 uses the records in the database (or alternative) to create a data structure 601 (FIG. 6), which is a three dimensional matrix comprising class, herein referred to as outcome (I—in work allocation context “do the work/will not do the work); attributes (a—in work allocation context: job type, job location, customer type, customer location etc) and values (v—values that the attributes can take). A particular cell 37 in the structure contains a count of number of times a particular outcome has occurred for a given attribute a and value v. The evaluating program 501 then takes, as input, the work item offered at step s5, (together with the attributes thereof) and evaluates, on the basis of information in the data structure 601, an outcome. This outcome indicates whether or not the workgroup is likely to carry out the work item.

[0052] The evaluation method is now described in more detail, with reference to FIGS. 6, 7 and 8. For the sake of clarity the method is described in the context of a road-crossing scenario rather than allocation of a work item because the number of attributes in a road-crossing scenario is far fewer than those involved in allocation of a work item. In a road-crossing scenario the attributes, outcomes and values comprise:

[0053] outcome (I) comprises cross road; do not cross road;

[0054] attributes (a) comprise light colour, urgency; and

[0055] values comprise red, amber, green, urgent, middle, none.

[0056] In this particular example, the evaluating program 501 evaluates the probability of a worker crossing the road given a red light and the fact that he has to cross the road urgently.

[0057] Assuming the dataset to comprise twenty road-crossing events for each of three workers (so that the database DB stores 60 records), the evaluating program firstly creates a data structure 601 corresponding thereto. A two-dimensional representation thereof is shown in FIG. 7.

[0058] Referring to FIG. 8, the evaluating program 501 then evaluates 801, on the basis of data recorded hitherto, the ratio of both the number of road crossings to number of road crossing events and the ratio of the number of null road crossings to number of road crossing events. This is referred to as evaluating a-priori probability of class membership, as described in Shannon and Weaver, “The mathematical theory of communication”, Urbana III, 1949.

[0059] Thus referring to FIGS. 7 and 8, the a-priori probabilities for cross/don't cross (p(y)) are calculated 801:

[0060] 41+6+60+30+60+60+30=287 for cross

[0061] 19+54+60+30+60+30=253 for don't cross

[0062] Total number of road crossing events=540

[0063] So p(y) for cross is 287/540=0.53148 & p(y) for don't cross is 0.46851.

[0064] The evaluating program then evaluates 803 post priori probabilities of outcomes a) crossing and b) not crossing the road, based on the a priori probabilities calculated at step 801. Specifically, the evaluating program 501 applies the following equation (Equation 1): $j\left( {{y\left. {X = x} \right)} = {p\left( {y\left. x \right){\log \left( \frac{p\left( {y{x}} \right)}{p(y)} \right)}} \right.}} \right.$

[0065] where

[0066] y is the value of an outcome (cross, don't cross)

[0067] x is the value of an attribute (red, urgent etc.)

[0068] X is an attribute (colour, urgency)

[0069] j value is an indicator identifying the probability of class membership (described in detail in P. Smyth and R. M. Goodman, ‘An information theoretic approach to rule induction from databases,’ IEEE Transactions on Knowledge and Data Engineering, vol.4, no.4, pp.301-316, August 1992)

[0070] j(y|X=x) is the value of j for an outcome y when X is x.

[0071] p(y|x) is the probability of y when X=x, calculated by dividing the number of times an outcome has been y when the attribute value for the work item was x

[0072] p(y) is the probability of the outcome ever taking this value (calculated from the a priori probabilities at step 801)

[0073] Referring again to FIG. 6, application of this equation yields the following:

[0074] Red && Cross

[0075] p(y|x)=47/180=0.26111

[0076] 0.26111/0.53148=0.49128

[0077] log (0.49128)=−0.30866

[0078] j(red|cross)=−0.080595

[0079] Red && Don't cross

[0080] p(y|x)=133/180=0.73888

[0081] 0.73888/0.46851=1.577103

[0082] log 1.577103=0.19786

[0083] j(red|don't cross)=0.1461965

[0084] Urgent && Cross

[0085] p(y|x)=161/180=0.89444

[0086] 0.89444/0.53148=1.68293

[0087] log 1.6829=0.226066

[0088] j(urgent|cross)=0.2022028

[0089] Urgent && Don't cross

[0090] p(y|x)=19/180=0.1055

[0091] 0.1055/0.46851=0.225300

[0092] log 0.225300=−0.6472377

[0093] j(urgent|don't cross)=−0.068359

[0094] Expressed formally, the evaluating program calculates j-values for each y for the value x which is taken by attribute X for all X.

[0095] The evaluating program then identifies 805 the largest j-value (in this example urgent && cross), and whichever outcome corresponds to this j-value (here cross) is returned by the evaluating program as the likely outcome (i.e. class value). As an alternative to returning the outcome corresponding to the largest j-value, the evaluating program could evaluate an average of all of the j values for an outcome by summing all the j-values for each outcome (y). In this case whichever outcome corresponds to the average j-value is returned 807 by the evaluating program 501.

[0096] Instead of using Equation 1 to identify the most informative attribute, and selecting the action to be taken on the basis thereof, other information measures could be employed. These other methods include the Bayes rule method, or the information gain measure, for which reference is directed to R. Quinlan “Induction of decision trees” Machine Learning, 1; 81-106 (1986). A survey of suitable techniques can be found in I Kononenko “On Biases in Estimating Multi-Valued Attributes” In Mellish, C (ed). Proceedings of the International Joint Conference on Artificial Intelligence, 1995 (IJCAI '95). pp 1034-1040.

[0097] The data structure 601 is a particularly convenient way of expressing data records corresponding to work environments, where workers may migrate between teams or leave the organisation at any time: a record corresponding to a new worker can be simply added to the data structure 601, and information relating to a particular worker can be removed by subtracting the record from the data structure 601.

[0098] Thus individual worker records can easily be added and removed from the data structure (and thus effectively from team decision making). This additive feature of the data structure 601 can be seen from the example below:

[0099] Assume that the database comprises records for workers X and Y. Assume that the records corresponding to worker X show that worker X has approached a road crossing 100 times, on a amber light with urgent need to cross the road. The data shows that, given these conditions, he has crossed 80 times. Given the same conditions, worker Y has crossed the road 100 times. The records for Worker X can be expressed as a matrix having the following elements: $\begin{matrix} {{\left\{ {{amber},\quad {{don}^{'}t\quad {cross}}} \right\} = 20},} \\ {\left\{ {{amber},{cross}} \right\} = 80} \\ {\left\{ {{urgent},{cross}} \right\} = 80} \\ {\left\{ {{urgent},\quad {{don}^{'}t\quad {cross}}} \right\} = 20.} \end{matrix}$

[0100] and those for worker Y: $\begin{matrix} {\left\{ {{amber},{cross}} \right\} = 100} \\ {\left\{ {{urgent},{cross}} \right\} = 100.} \end{matrix}$

[0101] All other values are 0.

[0102] A data structure 601 based on these matrices contains the following four values: $\begin{matrix} {\left\{ {{amber},\quad {{don}^{'}t\quad {cross}}} \right\} = 20} \\ {\left\{ {{amber},{cross}} \right\} = 180} \\ {\left\{ {{urgent},{cross}} \right\} = 180} \\ {\left\{ {{urgent},\quad {{don}^{'}t\quad {cross}}} \right\} = 20} \end{matrix}$

[0103] each of which is simply the sum of elements of the individual matrices.

[0104] In the context of allocating jobs to particular workgroups, a mediator agent's bidding strategy 35, which is based on the class value returned by the evaluating program and is discussed below, can thus readily be changed when a worker leaves, or joins, a workgroup (shown schematically in FIGS. 9 and 10 respectively).

[0105] Use of the outcome, or probability, returned at step 807 is now described. Returning to FIG. 4, having received the class value from the evaluating program (will do work, will not do work), and assuming that the class value indicates that the workgroup can do the work, the mediator agent 28 calculates whether it should make a bid for the work item (step s8). The mediator agent 28 employs a calculating program 503, which calculates whether the allocation of the work will meet the local business priorities of the mediator agent 28. These local business priorities can include constraints imposed by health and safety constraints; targets for total work time for its workgroup; and targets for performing certain volumes of certain types of work. The calculating program 503 can apply a modifying factor to the probability returned at step 807, and compares the modified probability with a condition for bidding for the work.

[0106] As a result of the calculation, the mediator agent 28, 29 for the workgroup may decide not to bid for the work (step s8), but instead to wait for the next offer on the next available work item (step s6). If the mediator agent 28, 29 decides that its local business priorities will be met, it makes a bid for the work item (step s9). The OSS agent 31 receives bids from all workgroups and determines how many bids it has received for the work item (step s10). If only one mediator agent makes a bid (step s11), that bid is accepted by the OSS agent 31 (step s12).

[0107] If more than one mediator agent makes a bid (step s11), the OSS agent 31 accepts the bid at the highest price (step s13). For example, at step s4 the OSS agent 31 provides a work item with a relatively high price P. The mediator agent 28 for the first workgroup 20 determines that it is likely to be able to allocate the work item to its workers, but its workgroup is relatively busy and cannot do the work urgently. It is therefore prepared to offer P-50 for the work item. The mediator agent 29 for the second workgroup 21 also determines that it can allocate the work item to its workers, but this workgroup is not very busy, so that the work item will assist the workgroup in reaching its targets. The second mediator agent 29 is therefore prepared to offer P-30 for the work item. In this case, the OSS agent 31 accepts the offer of P-30 from the second mediator agent 29 and allocates the work item to it.

[0108] The OSS agent 31 informs a selected mediator agent 29 that its bid has been successful (step s14). The mediator agent 29 then allocates/sells the work on to the workers (step s15). In essence, the mediator agent 29 sells the work to the workers at a price that offsets its investment in purchasing the work from the OSS agent 31. The mediator agent 28, 29 prices work based on two factors, the value of the work to the overall business as expressed by the OSS agent 31, namely the cost price to the mediator and the probability value returned at step 807. In addition the mediator agent 28, 29 may model the impact on the team's work schedule of each particular worker doing a piece of work and adjust the price of the work accordingly (e.g. to motivate the team to carry out the work item). 

1. A method of reviewing a work item for allocation to a group of resources, wherein review of the work item has been instigated by a work source means, including the steps of: creating a data structure identifying work items previously allocated to at least some of the resources in the group; evaluating the probability that one of resources will carry out the work item based on values in the data structure; and comparing the evaluated probability with a suitability criterion so as to identify whether one of the resources is suitable to carry out the work item.
 2. A method according to claim 1, in which if one of the resources is identified as being suitable to carry out the work item the method further includes evaluating a price to bid for the work item.
 3. A method according to claim 2, including generating a bid comprising the evaluated price and signalling the bid to the work source means.
 4. A method according to claim 3, further including the steps of receiving a signal identifying that the bid has been successful; for at least some of the resources, evaluating a similarity between the work item and work items previously allocated thereto; selecting at least one resource on the basis of the similarity; for the or each selected resource, applying a price to the work item proportionate to the similarity; and offering the work item to the selected resources at the respective applied price.
 5. A method according to any one of the preceding claims, in which the evaluating step includes evaluating posterior probabilities of a resource being capable of carrying out the work item on the basis of data indicative of previous work items carried out by a resource.
 6. A method of allocating a work item to a group of resources comprising the steps of offering the work item to a plurality of groups; receiving at least one bid generated in accordance with claim 3; selecting one of the bids in accordance with selection criteria and allocating the work item to the group corresponding to the selected bid.
 7. A method according to claim 6, in which the step of offering the work item includes evaluating a price for the work item on the basis of urgency associated therewith.
 8. Apparatus for reviewing a work item for allocation to a group of resources, wherein review of the work item has been instigated by a work source means, the apparatus including: a data structure identifying work items previously allocated to at least some of the resources in the group, the data structure comprising values corresponding both to attributes of the previously allocated work items and of the resources; evaluating means arranged to receive as input the data structure and the work item; evaluate the probability that one of resources in the group will carry out the work item based on values in the data structure; and comparing means arranged to compare the evaluated probability with a suitability criterion so as to identify whether one of the resources is suitable to carry out the work item.
 9. Apparatus according to claim 8, further including means arranged to evaluate a price to bid for the work item and to signal the bid to the work source means.
 10. Apparatus according to claim 9, which, on receipt of a signal identifying that the bid has been successful, is arranged to for at least some of the resources, evaluate the similarity between the work item and work items previously allocated to the resource; select at least one resource on the basis of the similarity; apply a price to the work item proportionate to the similarity; and offer the work item to the selected resources at the respective applied price.
 11. A work allocation system comprising a plurality of apparatus according to any one of claims 8 to 10 and at least one work source means, wherein, if two or more apparatus signal a bid to the work source means, the bids are processed in accordance with the contract net protocol. 